package it.unipd.dei.project.iandroid;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class TeamAdd extends Activity {
	private EditText txtSquadra;
	private EditText txtStadio;
	private EditText txtCitta;
	DatabaseOpenHelper databaseHelper;
	SQLiteDatabase db;
	private Cursor cur;
	private int j;
	boolean vuota = true; // flag per controllo dati inseriti
	boolean giaPresente = false;
	boolean edit = true;
	private String StringSquadraEditata;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Intent i = getIntent();
		String pkg = getPackageName();
		j = (i.getIntExtra(pkg + ".pos", -1));
		setContentView(R.layout.activity_team_add);
		// creo l'helper per aprire il DB
		databaseHelper = new DatabaseOpenHelper(getApplicationContext());
		// apro il DB sia in lettura che in scrittura
		db = databaseHelper.getWritableDatabase();

		txtSquadra = (EditText) findViewById(R.id.EditText1);
		txtStadio = (EditText) findViewById(R.id.EditText2);
		txtCitta = (EditText) findViewById(R.id.EditText3);

		if (j == -1)
			edit = false;

		if (edit) {
			cur = db.query("Team", null, "Id=" + j, null, null, null, null);
			cur.moveToNext();
			StringSquadraEditata = cur.getString(1);
			System.err.println(StringSquadraEditata);
			txtSquadra.setHint(cur.getString(1));
			txtStadio.setHint(cur.getString(2));
			txtCitta.setHint(cur.getString(3));
		}

		Button btnHome = (Button) findViewById(R.id.Conferma);
		btnHome.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View arg0) {


				cur = db.query("Team", null, null, null, null, null, "Id ASC");
				if (!edit) // controllo se siamo in add
				{
					System.err.println("siamo in add");
					if (cur.getCount() == 0) // se non ci sono dati nel DB metti
						// a 0
						// il primo id della prima
						// squadra
						// inserita
						j = 0;
					else { // se ci sono, metti l'id successivo a quello piu'
						// alto
						// gia' presente
						cur.moveToLast();
						j = cur.getInt(0) + 1;
					}
				}
				// stringhe immesse negli editText
				txtSquadra = (EditText) findViewById(R.id.EditText1);
				String squadra = txtSquadra.getText().toString();
				txtStadio = (EditText) findViewById(R.id.EditText2);
				String stadio = txtStadio.getText().toString();
				txtCitta = (EditText) findViewById(R.id.EditText3);
				String citta = txtCitta.getText().toString();

				cur = db.query("Team", null, null, null, null, null, "Id ASC");
				for (int i = 0; i < cur.getCount(); i++) {
					cur.moveToNext();
					if (cur.getString(1).equals(squadra)) {
						giaPresente = true;
						break;
					} else
						giaPresente = false;
				}


				// inserimento dati in Team
				if (!edit) {// siamo in add
					if (squadra.equals("") || stadio.equals("") || citta.equals("")) {
						alertMessageVuota();
					} else if (giaPresente) {
						alertMessageGiaPresente();
					} else {
						ContentValues v = new ContentValues();
						v.put("id", j);
						v.put("nome", squadra);
						v.put("stadio", stadio);
						v.put("citta", citta);
						db.insert("Team", null, v);
						vuota = false;
					}
				} else { // siamo in edit
					ContentValues v = new ContentValues();
					if (squadra.equals(StringSquadraEditata))
						giaPresente = false;
					if (giaPresente) {
						alertMessageGiaPresente();
					} else {
						if (!squadra.equals(""))
							v.put("nome", squadra);
						if (!stadio.equals(""))
							v.put("stadio", stadio);
						if (!citta.equals(""))
							v.put("citta", citta);
						v.put("id", j); // se v rimanesse vuoto, al momento
						// dell'update darebbe errore
						db.update("Team", v, "Id=" + j, null);
						vuota = false;
					}
				}

				// chiudi activity
				if (!vuota && !giaPresente) {
					Intent intent = new Intent();
					setResult(RESULT_OK, intent);
		
					finish();
				}
			}
		});
		// gestisco bottone"annullaB"
		Button annullaEvento = (Button) findViewById(R.id.Annulla);
		annullaEvento.setOnClickListener(new View.OnClickListener() {
			public void onClick(View view) {

				Intent intent = new Intent();
				setResult(RESULT_OK, intent);
		
				finish();
			}
		});
	}

	public void alertMessageVuota() {
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
		miaAlert.setTitle("Attenzione");
		miaAlert.setMessage("Completare tutti i campi");
		miaAlert.setIcon(R.drawable.warning);
		miaAlert.setPositiveButton("Continua", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();
			}
		});
		miaAlert.show();
	}

	public void alertMessageGiaPresente() {
		AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
		miaAlert.setTitle("Attenzione");
		miaAlert.setMessage("Il nome della squadra e' gia' presente!");
		miaAlert.setIcon(R.drawable.warning);
		miaAlert.setPositiveButton("Continua", new DialogInterface.OnClickListener() {

			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.cancel();
			}
		});
		miaAlert.show();
	}

}